package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"time"
)


/**
不安全，明文
增加带宽消耗
可以被禁用
cookie有上限
 */
func AuthMiddleWare() gin.HandlerFunc{
	return func(c *gin.Context) {
		if cookie,err :=  c.Cookie("abc"); err!=nil {
			if cookie =="123" {
				c.Next()
				return
			}
		}
		//返回错误
		c.JSON(http.StatusUnauthorized,gin.H{"error": "err"})
		// 若验证不通过，不再调用后续的函数处理
		c.Abort()
		return
	}
	
}

func shopIndexHandler(c *gin.Context){
	c.SetCookie("abc", "123", 60, "/",
		"localhost", false, true)
	// 返回信息
	c.String(http.StatusOK, "Login success!")
	//time.Sleep(5 * time.Second)
}
func shopHomeHandler(c *gin.Context) {
	time.Sleep(3 * time.Second)
}


func main() {
	// 1.创建路由
	r := gin.Default()
	r.GET("/login", func(c *gin.Context) {
		// 设置cookie
		c.SetCookie("abc", "123", 60, "/",
			"localhost", false, true)
		// 返回信息
		c.String(200, "Login success!")
	})
	r.GET("/home", AuthMiddleWare(), func(c *gin.Context) {
		c.JSON(200, gin.H{"data": "home"})
	})
	r.Run(":8900")

}


//
//func main() {
//	r:=  gin.Default()
//	r.GET("cookie", func(c *gin.Context) {
//		cookie,err:=  c.Cookie("key_cookie")
//		if err !=nil {
//			cookie ="NotSet"
//			// 给客户端设置cookie
//			// maxAge int, 单位为秒
//			// path,cookie所在目录
//			// domain string,域名
//			//secure 是否智能通过https访问
//			// httpOnly bool  是否允许别人通过js获取自己的cookie
//			c.SetCookie("key_cookie","value_cookie",60,"/",
//				"localhost", false, true)
//		}
//		fmt.Println("cookie的值是： %s\n", cookie)
//	})
//	r.Run(":8900")
//}
